package Demo8;

public class Producer extends Thread {
    @Override
    public void run() {
        while (true) {
            // 锁着缓冲区
            synchronized (Buffer.lock) {
                if (Buffer.capacity == 0) {
                    // 判断规定的缓冲区总个数是否为0
                    break;
                }
                // 判断是否可以进入缓冲区
                if (Buffer.flag == 1) {
                    // 表示缓冲区还有物品不能进入  等待让消费者消费
                    try {
                        Buffer.lock.wait();
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                } else {
                    // 可以进入
                    // 缓冲区没有物品，进行生产
                    System.out.println("生产者生产了一件物品");

                    // 唤醒消费者进行消费
                    Buffer.lock.notifyAll();
                    // 修改缓冲区flag让生产者不在进入消费(交替执行)
                    Buffer.flag = 1;

                }
            }
        }
    }
}
